package gruppoSoluzione.mainService;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.StringTokenizer;

/**
 * I Parametri di un Servizio HTTP, gestito con una mappa chiave(parametro)-valore
 * 
 * @author Alessandro Martinelli
 */
public class ServiceParams {

	private HashMap<String, String> params=new HashMap<String, String>();
	
	/**
	 * Crea un oggetto ServiceParams caricando una stringa contenente i parametri di una URL
	 * e memorizzando tutti i parametri presenti 
	 * @param params
	 */
	public ServiceParams(String params) {
		loadParams(params);
	}

	/**
	 * Carica una stringa contenente i parametri di una URL
	 * e memorizza tutti i parametri presenti 
	 * @param params
	 */
	public void loadParams(String params) {
		StringTokenizer tokenizer=new StringTokenizer(params,"=&");
		while(tokenizer.hasMoreTokens()){
			String parameter=tokenizer.nextToken();
			if(tokenizer.hasMoreTokens()){
				String value=tokenizer.nextToken();
				this.params.put(parameter,value);
			}
		}
	}
	
	/**
	 * Aggiunge un parametro
	 * @param param
	 * @param value
	 */
	public void addParam(String param,String value){
		params.put(param, value);
	}
	
	/**
	 * Recupera un Parametro
	 * @param parameter
	 * @return
	 */
	public String getValue(String parameter) {
		try {
			String value = URLDecoder.decode(params.get(parameter),"UTF-8");
			return value;
		} catch (UnsupportedEncodingException e) {
			//should not happen since strings comes from URL
			throw new RuntimeException(e.getMessage()); 
		}
	}
}
